// Decompiled by DJ v3.7.7.81 Copyright 2004 Atanas Neshkov  Date: 2007-9-15 18:53:59

// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   kp.java

package com.zelix;

import java.util.*;

// Referenced classes of package com.zelix:
//            ht, it, fh, ko, 
//            xb, wb, cc, dp, 
//            lt, mu, mt, nt, 
//            iu, ou, lx, mx, 
//            fy, qy, tb

class kp
{

    private it a;
    private ht b;
    private ko c;
    private HashSet d;
    private fy e;
    private fy f;
    private static String z[];

    kp(it it1, ht ht1, ko ko1)
        throws cc
    {
        qy qy1;
        Vector vector;
        int i;
        boolean flag;
        flag = tb.b;
        super();
        d = new HashSet();
        e = new fy();
        f = new fy();
        a = it1;
        b = ht1;
        c = ko1;
        qy1 = new qy();
        vector = ht1.i();
        i = 0;
        if(!flag) goto _L2; else goto _L1
_L1:
        fh fh1 = (fh)vector.get(i);
        HashSet hashset = new HashSet();
        HashSet hashset1 = new HashSet();
        fy fy1 = new fy();
        a(fh1, hashset1, fy1, hashset, qy1, false);
        i++;
_L2:
        if(i < vector.size()) goto _L1; else goto _L3
_L3:
        Enumeration enumeration = e.d();
        if(!flag) goto _L5; else goto _L4
_L4:
        ou ou1;
        Enumeration enumeration1;
        ou1 = (ou)enumeration.nextElement();
        Hashtable hashtable = e.b(ou1);
        enumeration1 = hashtable.keys();
        if(!flag) goto _L7; else goto _L6
_L6:
        ou ou2 = (ou)enumeration1.nextElement();
        f.b(ou2, ou1, ou1);
_L7:
        if(enumeration1.hasMoreElements()) goto _L6; else goto _L5
_L5:
        if(!enumeration.hasMoreElements())
            return;
        if(true) goto _L4; else goto _L8
_L8:
    }

    private void a(fh fh1, HashSet hashset, fy fy1, HashSet hashset1, qy qy1, boolean flag)
        throws cc
    {
        mt mt1;
        Enumeration enumeration;
        boolean flag2;
        flag2 = tb.b;
        mt1 = fh1.c();
        a(((lt) (mt1)), hashset, hashset1, qy1);
        if(!flag)
            break MISSING_BLOCK_LABEL_213;
        enumeration = fy1.d();
        if(!flag2) goto _L2; else goto _L1
_L1:
        dp dp1;
        Object obj;
        dp1 = (dp)enumeration.nextElement();
        if(a.a(dp1, mt1))
            continue; /* Loop/switch isn't completed */
        obj = fh1.q();
        if(!flag2) goto _L4; else goto _L3
_L3:
        ou ou1;
        Enumeration enumeration2;
        mt mt2 = ((fh) (obj)).c();
        if(!a.a(dp1, mt2))
            continue; /* Loop/switch isn't completed */
        ou1 = a.a(mt2, dp1);
        if(ou1.x())
            break; /* Loop/switch isn't completed */
        Hashtable hashtable1 = fy1.b(dp1);
        enumeration2 = hashtable1.keys();
        if(!flag2) goto _L6; else goto _L5
_L5:
        ou ou3 = (ou)enumeration2.nextElement();
        e.b(ou1, ou3, ou3);
_L6:
        if(enumeration2.hasMoreElements()) goto _L5; else goto _L7
_L7:
        if(!flag2)
            break; /* Loop/switch isn't completed */
        obj = ((fh) (obj)).q();
_L4:
        if(((fh) (obj)).w()) goto _L3; else goto _L2
_L2:
        if(enumeration.hasMoreElements()) goto _L1; else goto _L8
_L8:
        a(mt1, hashset.iterator());
        ou aou[];
        int i;
        aou = (ou[])mt1.w();
        i = 0;
        if(!flag2) goto _L10; else goto _L9
_L9:
        Object obj1;
        obj = aou[i];
        if(((iu) (obj)).D() || ((iu) (obj)).A() || ((mu) (obj)).U())
            continue; /* Loop/switch isn't completed */
        obj1 = ((mu) (obj)).O();
        if(hashset.contains(obj1))
            d.add(obj);
        if(!fy1.a(obj1)) goto _L12; else goto _L11
_L11:
        Enumeration enumeration1;
        Hashtable hashtable = fy1.b(obj1);
        enumeration1 = hashtable.keys();
        if(!flag2) goto _L14; else goto _L13
_L13:
        ou ou2 = (ou)enumeration1.nextElement();
        e.b(obj, ou2, ou2);
_L14:
        if(enumeration1.hasMoreElements()) goto _L13; else goto _L12
_L12:
        fy1.b(obj1, obj, obj);
        i++;
_L10:
        if(i < aou.length) goto _L9; else goto _L15
_L15:
        obj = fh1.p();
        if(obj == null) goto _L17; else goto _L16
_L16:
        if(!flag2) goto _L19; else goto _L18
_L18:
        obj1 = (fh)((Enumeration) (obj)).nextElement();
        a(((fh) (obj1)), (HashSet)hashset.clone(), (fy)fy1.clone(), (HashSet)hashset1.clone(), qy1, false);
_L19:
        if(((Enumeration) (obj)).hasMoreElements()) goto _L18; else goto _L17
_L17:
        obj1 = fh1.l();
        if(obj1 == null) goto _L21; else goto _L20
_L20:
        if(!flag2) goto _L23; else goto _L22
_L22:
        fh fh2 = (fh)((Enumeration) (obj1)).nextElement();
        lx.b(fh1.w(), z[1] + fh1.d() + " " + fh2.d());
        lx.b(fh2.w(), z[0] + fh1.d() + " " + fh2.d());
        boolean flag1 = fh1.v() && !fh2.v();
        a(fh2, (HashSet)hashset.clone(), (fy)fy1.clone(), (HashSet)hashset1.clone(), qy1, flag1);
_L23:
        if(((Enumeration) (obj1)).hasMoreElements()) goto _L22; else goto _L21
_L21:
    }

    private nt a(String s)
        throws cc
    {
        try
        {
            nt nt1 = c.a(s);
            return nt1;
        }
        catch(xb xb1)
        {
            throw new cc(z[4] + lt.a(xb1.a()) + z[3]);
        }
        catch(wb wb1)
        {
            throw new cc(wb1.getMessage());
        }
    }

    ou[] a()
    {
        ou aou[] = new ou[d.size()];
        return (ou[])d.toArray(aou);
    }

    Enumeration a(ou ou1)
    {
        Hashtable hashtable = f.b(ou1);
        if(hashtable != null)
            return hashtable.keys();
        else
            return mx.a();
    }

    private void a(lt lt1, HashSet hashset, HashSet hashset1, qy qy1)
        throws cc
    {
        String s;
        boolean flag;
        flag = tb.b;
        s = lt1.j();
        if(s.equals(z[2])) goto _L2; else goto _L1
_L1:
        String as[];
        int i;
        String s1 = lt1.z();
        fh fh1 = fh.b(s1);
        if((fh1 == null || !fh1.w()) && !hashset1.contains(s1))
        {
            hashset1.add(s1);
            nt nt1 = a(s1);
            a(nt1, hashset, qy1);
            a(((lt) (nt1)), hashset, hashset1, qy1);
        }
        as = lt1.u();
        i = 0;
        if(!flag) goto _L4; else goto _L3
_L3:
        String s2 = as[i];
        fh fh2 = fh.b(s2);
        if((fh2 == null || !fh2.w()) && !hashset1.contains(s2))
        {
            hashset1.add(s2);
            nt nt2 = a(s2);
            HashSet hashset2 = null;
            if(lt1.F())
                hashset2 = new HashSet();
            else
                hashset2 = hashset;
            a(nt2, hashset2, qy1);
            a(((lt) (nt2)), hashset2, hashset1, qy1);
            if(lt1.F())
            {
                hashset.addAll(hashset2);
                a((mt)lt1, hashset2.iterator());
            }
        }
        i++;
_L4:
        if(i < as.length) goto _L3; else goto _L2
_L2:
    }

    private void a(nt nt1, HashSet hashset, qy qy1)
        throws cc
    {
        Vector vector;
        mu amu[];
        int i;
        boolean flag;
        flag = tb.b;
        vector = qy1.d(nt1);
        if(vector != null)
            break MISSING_BLOCK_LABEL_101;
        vector = new Vector();
        amu = nt1.w();
        i = 0;
        if(!flag) goto _L2; else goto _L1
_L1:
        mu mu1 = amu[i];
        if(!mu1.D() && !mu1.A() && !mu1.U())
            vector.add(mu1.O());
        i++;
_L2:
        if(i < amu.length) goto _L1; else goto _L3
_L3:
        qy1.a(nt1, vector);
        hashset.addAll(vector);
        return;
    }

    private void a(mt mt1, Iterator iterator)
    {
        boolean flag = tb.b;
        if(!flag) goto _L2; else goto _L1
_L1:
        dp dp1;
        fh fh2;
        dp1 = (dp)iterator.next();
        if(a.a(dp1, mt1))
            continue; /* Loop/switch isn't completed */
        fh fh1 = fh.b(mt1.j());
        fh2 = fh1.q();
        if(!flag) goto _L4; else goto _L3
_L3:
        mt mt2 = fh2.c();
        if(!a.a(dp1, mt2))
            continue; /* Loop/switch isn't completed */
        ou ou1 = a.a(mt2, dp1);
        if(ou1.x())
            break; /* Loop/switch isn't completed */
        d.add(ou1);
        if(!flag)
            break; /* Loop/switch isn't completed */
        fh2 = fh2.q();
_L4:
        if(fh2.w()) goto _L3; else goto _L2
_L2:
        if(iterator.hasNext()) goto _L1; else goto _L5
_L5:
    }

    private static String z(char ac[]) {
        for (int i = 0; i < ac.length; i++) {
            byte key = 0;
            switch (i % 5) {
                case 0:
                    key =4;
                    break;
                case 1:
                    key =13;
                    break;
                case 2:
                    key =35;
                    break;
                case 3:
                    key =79;
                    break;
                default:
                    key =127;
                    break;
            }
            ac[i] ^= key;
        }
        return new String(ac).intern();
    }

    static 
    {
        String as[];
        as = new String[5];
        as[0] = ",?\no";
        as[1] = ",<\no";
        as[2] = "nlU.PhlM(PKoI*\034p";
        as[3] = "#-M \013$kL:\021`#\003gM-";
        as[4] = "GaB<\f$*";
        for (int i = 0; i < as.length; i++) {
            as[i] = z(as[i].toCharArray());
        }
        z = as;
    }
}